/**
 * 说明：封装ajax提交
 * url：url
 * id：提交表单后需要刷新的表格 id 无需刷新 则写null
 * data： ajax 提交的表单数据
 * msgType: 成功后提示信息方式
 * dlg ：弹窗id
 */
function doAjax(url, id, formId, msgType, dlgId) {

    $.ajax({
        url: url,
        dataType: 'json',
        type: 'post',
        data: $("#" + formId).serialize(),
        success: function (data) {
            if (data.success == true) {
                if (isEmpty(msgType)) {
                    $.messager.show({
                        title: '提示',
                        showType: 'slide',
                        msg: data.message
                    });
                } else {
                    $.messager.alert('提示', data.message);
                }
                if (!isEmpty(dlgId)) {
                    $("#" + dlgId).dialog('close');
                }
            } else {
                $.messager.alert('错误提示', data.message);
            }
            // 成功后刷新的dg
            if (!isEmpty(id)) {
                $('#' + id).datagrid('reload');
            }
        },
        error: function () {
            $.messager.alert('错误提示', data.message);
        }
    });
}

/**
 * 获取选中的行
 * 单选
 */
function getDgChecked(id) {
    var checkedRows = $('#' + id).datagrid('getChecked');
    if (checkedRows && checkedRows != null && checkedRows.length == 1) {
        return checkedRows[0];
    } else if (checkedRows.length > 1) {
        $.messager.alert('错误提示', '请选择一行');
        return false;
    } else {
        $.messager.alert('错误提示', '您未选中任何行');
        return false;
    }
}

/**
 * 说明：表单必填项校验
 */
function formValidate(formId) {
    if (!$("#" + formId).form('validate')) {
        // $.messager.alert('错误提示', '您有必填项没填写');
        return false;
    }
    return true;
}

/**
 * 说明：空值字符串判断
 */
function isEmpty(str) {
    if (str && str != null && str.length > 0) {
        return false;
    }
    return true;
}

/**
 * 按钮样式
 * @param btnIdArr 按钮id数组
 */
function refreshBtn(btnIdArr) {
    for (var i in btnIdArr) {
        $('#' + btnIdArr[i]).addClass('l-btn-plain');
        // $('#' + btnIdArr[i]).removeClass('l-btn-plain');
    }

}

function convert(rows) {
    function exists(rows, parentAreaId) {
        for (var i = 0; i < rows.length; i++) {
            if (rows[i].areaId === parentAreaId) return true;
        }
        return false;
    }

    var nodes = [];
    // get the top level nodes
    for (var i = 0; i < rows.length; i++) {
        var row = rows[i];
        if (!exists(rows, row.parentAreaId)) {
            nodes.push({
                id: row.areaId,
                text: row.areaName
            });
        }
    }

    var toDo = [];
    for (var i = 0; i < nodes.length; i++) {
        toDo.push(nodes[i]);
    }
    while (toDo.length) {
        var node = toDo.shift();    // the parent node
        // get the children nodes
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            if (row.parentAreaId == node.id) {
                var child = {id: row.areaId, text: row.areaName, state: row.state};
                if (node.children) {
                    node.children.push(child);
                } else {
                    node.children = [child];
                }
                toDo.push(child);
            }
        }
    }
    return nodes;
}

$.extend($.fn.validatebox.defaults.rules, {
    CHS: {
        validator: function (value, param) {
            return /^[\u0391-\uFFE5]+$/.test(value);
        },
        message: '请输入汉字'
    },
    ZIP: {
        validator: function (value, param) {
            return /^[1-9]\d{5}$/.test(value);
        },
        message: '邮政编码不存在'
    },
    QQ: {
        validator: function (value, param) {
            return /^[1-9]\d{4,10}$/.test(value);
        },
        message: 'QQ号码不正确'
    },
    mobile: {
        validator: function (value, param) {
            return /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/.test(value);
        },
        message: '手机号码不正确'
    },
    number: {
        validator: function (value, param) {
            return /^\d+$/.test(value); //不能输入小数
        },
        message: '请输入数字'
    },
    numberType: {
        validator: function (value, param) {
            return /^(\-|\+)?\d+(\.\d+)?$/.test(value);//可以输入小数
        },
        message: '请输入正确数字类型'
    },
    IDCard: {
        validator: function (value, param) {
            return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value);
        },
        message: '请输入正确的身份证号'
    }
});

/**
 * 校验开始时间和结束时间
 */
function checkTime(startId, endId, msg1, msg2) {
    $("#" + startId).datebox({
        onChange: function (newValue, oldValue) {
            var endTime = $("#" + endId).val();
            if (!isEmpty(endTime) && newValue != '' && newValue > endTime) {
                $("#" + startId).datebox('setValue', '');
                $.messager.alert("错误信息", msg1);
            }
        }
    });
    $("#" + endId).datebox({
        onChange: function (newValue, oldValue) {
            var startTime = $("#" + startId).val();
            if (!isEmpty(startTime) && newValue != '' && newValue < startTime) {
                $("#" + endId).datebox('setValue', '');
                $.messager.alert("错误信息", msg2);
            }
        }
    });
}
/**
 * 判断传入的值是否为空
 * @param selectVal
 * @returns {boolean}
 */
function emptyOrNot(selectVal) {
    if (selectVal != '' && selectVal != "" && selectVal != null && selectVal != 'null' && selectVal != 'undefined' && selectVal != undefined) {
        return true
    } else {
        return false;
    }
}

//IE浏览器下不支持endwith
String.prototype.endWith = function (str) {
    if (str == null || str == "" || this.length == 0 || str.length > this.length)
        return false;
    if (this.substring(this.length - str.length) == str)
        return true;
    else
        return false;
    return true;
}

/*绑定事件*/
function addEvent(obj, sType, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(sType, fn, false);
    } else {
        obj.attachEvent('on' + sType, fn);
    }
};

function removeEvent(obj, sType, fn) {
    if (obj.removeEventListener) {
        obj.removeEventListener(sType, fn, false);
    } else {
        obj.detachEvent('on' + sType, fn);
    }
};

function prEvent(ev) {
    var oEvent = ev || window.event;
    if (oEvent.preventDefault) {
        oEvent.preventDefault();
    }
    return oEvent;
}

/*添加滑轮事件*/
function addWheelEvent(obj, callback) {
    if (window.navigator.userAgent.toLowerCase().indexOf('firefox') != -1) {
        addEvent(obj, 'DOMMouseScroll', wheel);
    } else {
        addEvent(obj, 'mousewheel', wheel);
    }

    function wheel(ev) {
        var oEvent = prEvent(ev),
            delta = oEvent.detail ? oEvent.detail > 0 : oEvent.wheelDelta < 0;
        callback && callback.call(oEvent, delta);
        return false;
    }
};

$(".layui-table tbody tr").mouseout(function () {
    $(this).children().find("span").css("background", "none");
    $(this).children().find("input").css("background", "none");
})

/**
 * WdatePicker日期格式转换
 * @param target
 * @param dateformt
 * @returns {*}
 * @constructor
 */
function GetWdatePickerData(target, dateformt) {
    var handle = $.extend({}, $.fn.textbox.defaults.inputEvents, {
        click: function () {
            WdatePicker({
                onpicking: function (dp) {
                    $("#" + target).textbox('setValue', dp.cal.getNewDateStr());
                }, dateFmt: dateformt, onclearing: function (dp) {
                    $("#" + target).textbox('setValue', '');
                }
            });
        }
    });
    return handle;
}

//按钮权限隐藏
function btnHide(arr) {
    //获取所有的toolbar按钮
    if (userType != '2') {
        var button = $('div.datagrid div.datagrid-toolbar a');
        for (var i = 0; i < arr.length; i++) {
            for (var j = 0; j < button.length; j++) {
                var toolbar = button[j];
                var id = toolbar.id;
                if (id == arr[i]) {  //隐藏Id为add的按钮
                    button.eq(j).hide();
                    $('div.datagrid div.datagrid-toolbar div').eq(j).hide();
                }
            }
        }
    }
}

layui.use('element', function(){
    var element = layui.element;
    //导航的hover效果、二级菜单等功能，需要依赖element模块

    //监听导航点击
    element.on('nav(shouYeHead)', function(elem){
    });
});

function easyRightDisplay(btnList) {
    //获取所有的toolbar按钮
    var button = $('div.datagrid div.datagrid-toolbar a');
    for (var i = 0; i < button.length; i++) {
        var toolbar = button[i];
        var id = toolbar.id;
        if(btnList != null){
            $.each(btnList,function (key,value) {
                if (id == value) {  //隐藏按钮
                    var btn = $('div.datagrid div.datagrid-toolbar a').eq(i);
                    btn.hide();
                    var $td = btn.parents("td")
                    var	separatorNext = $td.next("td").find("div:first");
                    var	separatorPrev = $td.prev("td").find("div:first");
                    if(separatorNext.length){
                        separatorNext.remove();
                        // return false;
                    }else {
                        separatorPrev.remove();
                    }
                    // if(separatorPrev.length){
                    //     separatorPrev.remove();
                    // }
                    return false;
                }
            })
        }else {
            return false;
        }
    }
}

function closeLoading() {
    $("#loadingDiv").fadeOut("normal", function () {
        $(this).remove();
    });
}
var no;
$.parser.onComplete = function () {
    if (no) clearTimeout(no);
    no = setTimeout(closeLoading, 1000);
}

function dateFormat(value,type) {
    if (value == '' || value == null) {
        return '';
    }
    var datetime = new Date();
    datetime.setTime(value);
    var year = datetime.getFullYear();
    var month = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
    var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
    var hour = datetime.getHours()< 10 ? "0" + datetime.getHours() : datetime.getHours();
    var minute = datetime.getMinutes()< 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
    var second = datetime.getSeconds()< 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
    if(type == 'date'){
        return year + "-" + month + "-" + date;
    }
    if(type == 'datetime'){
        return year + "-" + month + "-" + date+" "+hour+":"+minute+":"+second;
    }
}

function vStatus(value) {
    if (value == '1') {
        return '待审';
    }else if(value == '2'){
        return '已审';
    }else if(value == '99'){
        return '待审';
    }else{
        return '';
    }
}

function vRunStatus(value) {
    if (value == '150') {
        return '运行中';
    }else if(value == '151'){
        return '关闭';
    }else{
        return '';
    }
}
function isNull(data) {
    if(data != null && data != 0 && data != ""){
        return true;
    }else {
        return false;
    }
}

function setDatetimebox(index,data) {
    if(isNull(data)){
        $('#'+index).datebox('setValue', data);
    }
}

function setCombobox(index,data) {
    if(isNull(data)){
        $('#'+index).combobox('select', data);
    }
}

function setTextbox(index,data) {
    if(isNull(data)){
        $('#'+index).textbox('setValue', data);
    }
}